home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
IRIX Base Documentation 2001 May
/
SGI IRIX Base Documentation 2001 May.iso
/
usr
/
relnotes
/
performer_eoe
/
ch4.z
/
ch4
Wrap
Text File
|
2001-04-17
|
27KB
|
727 lines
- 1 -
4. _K_n_o_w_n__P_r_o_b_l_e_m_s__a_n_d__W_o_r_k_a_r_o_u_n_d_s
This chapter lists the problems with the OpenGL Performer
libraries and with the shared memory configurations.
Note: This list is specific to OpenGL Performer for IRIX
systems. Known problems with OpenGL Performer for Linux can
be found in the Linux release notes, installed in
/usr/doc/performer-2.4/ (Linux only).
4.1 _IIII_RRRR_IIII_XXXX _6666_...._5555
In IRIX 6.5 through IRIX 6.5.4, a change in the semantics of
sginap() can cause frames to be missed if the application is
running in FLOAT or LOCK phase and finishing more than a
full field early. The sginap() call is used by OpenGL
Performer specifically in the case where the application
finishes more than a full field ahead of schedule. This
does not affect applications running at field rate (ie. 60
Hz) or applications running at their requested rate. This
was fixed in the IRIX 6.5.5 update.
A workaround is to give the program a realtime scheduling
priority using the npri program (which must be run as root
or with the CAP_SCHED_MGT capability):
# npri -s RR -r <any number 0-255> <program> <args>
or:
# npri -s FIFO -r <any number 0-255> <program> <args>
To allow users to run npri without full root permissions,
you can give the npri program the set-capability-on-
execution attribute:
# chcap CAP_SCHED_MGT+eip /usr/sbin/npri
If you later want to change it back:
# chcap all= /usr/sbin/npri
See the _n_p_r_i(1) and _c_h_c_a_p(1) references pages for more
information.
- 2 -
_4._2 _GGGG_eeee_nnnn_eeee_rrrr_aaaa_llll _IIII_RRRR_IIII_XXXX _IIII_ssss_ssss_uuuu_eeee_ssss
+o _6._x _O_S _b_u_g _w_i_t_h _s_h_a_r_e_d _a_r_e_n_a _p_l_a_c_e_m_e_n_t: An obscure bug
in IRIX 6.2-6.4 with default placement of the shared
arena can cause programs to die due to lack of heap
space for malloc. Typcially the program will die during
X or GL initialization with a message like:
PF Warning/Internal(12): pfWindow::openNewNoPort()
- null visual
Xlib: sequence lost (0x10002 > 0x10) in reply type
0x0
X Error: 0
Request Major Code 0 ()
Error Serial #2
Current Serial #16
Running the program through the unix system call
tracer (par):
par -s -i -SS prog options
will show messages like:
966mS[ 1]perfly_ogl( 4781): brk(0x10086e58)
errno = 12 (Not enough space)
shortly before the death.
Workaround: through the environment variable
PFSHAREDBASE or in with pfSharedArenaBase() before
pfInit(), explicitly set the address of the arena so
that it is not too close to the heap and does not
collide with other DSOs. An address that has worked
with programs exhibiting the problem that are very
close to perfly is: 0x18000000.
ex:
pfSharedArenaBase(0x18000000);
or
setenv PFSHAREDBASE 0x18000000
If this address is not sufficient, run again with par
and the following environment variables set:
setenv _RLD_PATH /usr/lib/rld.debug; setenv
_RLD_ARGS -v
- 3 -
and redirect all output to a file. Look for the
addresses of the mmap() calls and of address of DSO
load actions to find a free address range in which to
place the arena. Compiling with some libraries
statically can make this operation easier.
+o Using 7.2 Compilers you may encounter 'Unresolved
symbol ___rcis'. Install patch 2483 (or its successor)
- "7.2 compiler runtime environment for IRIX
6.2/6.3/6.4" to fix the problem
+o The XSGIvc library on IRIX 6.2 did not support 64bit
operation before patch 1808 and so functionality
requiring XSGIvc, such as dynamic video resize, are
currently not enabled when running 64bit.
+o IRIS GL is not recommended on any OpenGL native
machines such as O2, Octane, IMPACT graphics or
InfiniteReality -- OpenGL operation should be used
instead.
+o Overflowing texture memory when using Clipmapping can
cause texture corruption. This is a bug in OpenGL in
InfiniteReality. If you try to run cliptex -2 mof.ct
(forcing both 2 windows and 2 cliptextures), you will
may get garbage texture and extremely slow (even locked
up) performance. This is due to a known bug in the iR
OpenGL: cliptextures can't be swapped in texture
memory. It will also happen with perfly, and with
cliptex -3 hl.ct if you partially fill the texture
memory with other running programs first. So if you
overfill your texture memory with cliptextures, you
will see this behavior.
+o When linking executables with Performer libraries, an
alarming number of warnings about symbols that are
defined in multiple .so's may be printed. These are
harmless but the appropriate compiler option to disable
the warning has not yet been identified.
+o On RealityEngine graphics, when more than 512 textures
are used the hardware and or host-side software may
become confused and in some cases, may falter
completely and terminate the application. This is a
graphics library limitation: IRIS Performer has no
limit to the number of textures.
+o On other graphic systems than RealityEngine and
InfiniteReality, the video rate used by IRIS Performer
for frame rate control is computed at application
startup on some machines and is not always exactly
- 4 -
correct. The problem is greatly aggravated when the
system's load average is at least one process per cpu,
so it is best to start a Performer app when the system
is otherwise quiet. If this is a problem, the video
rate can be set with _p_f_V_i_d_e_o_R_a_t_e or run locked to a
processor by using _p_f_u_L_o_c_k_D_o_w_n_P_r_o_c (the -L option in
perfly).
+o Although IRIS Performer supports it, the OpenGL
rendering model does not support different material
color modes for front and back materials. When
Performer encounters this case, it disables (ignores)
the material color mode for the back material when
using OpenGL.
4.3 _IIII_RRRR_IIII_XXXX_6666_...._2222 _aaaa_nnnn_dddd _6666_...._4444 _aaaa_nnnn_dddd _NNNN_3333_2222_////_6666_4444_bbbb_iiii_tttt
+o _V_i_d_e_o _c_h_a_n_n_e_l _c_o_n_t_r_o_l _a_n_d _d_y_n_a_m_i_c _r_e_s_i_z_e: The XSGIvc
X11 extension for video control did not support 64 bit
operation in IRIX 6.2 and 6.4. This is fixed in IRIX
6.5. IRIS Performer 2.2.2 will support support video
channel control under 64bit operation on IRIX 6.5 and
later.
+o _S_t_a_t_i_s_t_i_c_s: The PFSTATSHW_CPU pfStats statistics class
for accumulation of statistics on CPU usage are not yet
implemented for IRIX6 operation (64-bit or 32-bit).
4.4 _IIII_nnnn_ffff_iiii_nnnn_iiii_tttt_eeee_RRRR_eeee_aaaa_llll_iiii_tttt_yyyy
_G_a_n_g _S_w_a_p pfChanCalligEnable() [perfly -U] will not set
up GangSwap correctly in multipipe configurations. The
visible result is a 1Hz frame rate, even without
database [the same thing happen if you start GangSwap
and you do not have the SwapReady cables linking the
pipes together]. You will have to force the GangSwap
using PFCHAN_SWAPBUFFERS_HW attribute in addition to
pfChanCalligEnable() [perfly -G -U ...]
+o _V_i_d_e_o _c_h_a_n_n_e_l _c_o_n_t_r_o_l _a_n_d _X: X primitives will not be
knowledgeable of video resizing operations. This means
that on a resized video channel, the X cursor will not
be drawn in the proper location or of the proper size,
and X menus may be unusable.
+o _V_i_d_e_o _c_h_a_n_n_e_l _c_o_n_t_r_o_l _a_n_d _m_u_l_t_i_p_l_e _a_p_p_l_i_c_a_t_i_o_n_s: On
InfiniteReality, only one application may be bound to a
- 5 -
video channel. If, for example, two copies of perfly
are running, only one may do dynamic resizing of a
video channel. Additionally, if a second application
attempts to bind to the video channel while the first
is still executing, it will incur an X error and may
terminate. See the pfVideoChannel reference page for
more information.
+o _G_r_a_p_h_i_c_s _p_i_p_e_l_i_n_e _s_t_a_t_i_s_t_i_c_s _a_n_d _m_u_l_t_i_p_l_e _a_p_p_l_i_c_a_t_i_o_n_s:
In base IRIX6.x on InfiniteReality, only one
application may be doing graphics pipeline statistics
at a time. If a second application attempts to collect
graphics pipeline statistics simultaneously with the
first, the second application may hang. If for
example, there are two copies of perfly executing, one
should only select graphics pipeline statistics in one
at a time and disable them in one program before
enabling them in another.
+o _F_i_l_l _s_t_a_t_i_s_t_i_c_s _a_n_d _G_r_a_p_h_i_c_s _p_i_p_e_l_i_n_e _s_t_a_t_i_s_t_i_c_s:
InfiniteReality on base IRIX 6.X does not support
simultaneous usage of fill stats and graphics pipeline
statistics. If both of these modes are enabled
simultaneously, even through separate programs,
"KONA_DMAREAD: Resource busy" error messages will be
generated. IRIS Performer 2.2.2 does not allow the
Application to enable both simultaneously.
+o _F_r_a_m_e _b_u_f_f_e_r _r_e_a_d _b_a_c_k _a_n_d _D_V_R InfiniteReality does not
support read back from the frame buffer when DVR is in
use. Performer will not prevent that to happen, for
example asking for fill stats when DVR is on.
+o InfiniteReality does not support DVR on X for video
larger than 1280. IRIS Performer will resize only in
the Y direction to prevent the whole screen from being
garbage.
+o _V_i_s_u_a_l_s _f_o_r _O_p_e_n_G_L/_X: InfiniteReality does not support
10 bits RGB with alpha plane. Only 12 bits per
component is supported when the alpha plane is enabled.
4.5 _llll_iiii_bbbb_pppp_rrrr
+o _p_f_F_l_u_x_e_s: can run out of valid buffers for updating
slow readers. If you are running Lock or Float Phase,
and if the App is much faster than the Cull/Draw then
Draw process may not be able to catch up and use non up
to date data until the App slows down. For morphing
- 6 -
applications that require eye-frame-accurate data to be
passed from the APP or CULL to the DRAW process, a
workaround is to use pfCycleBuffer instead of pfFlux.
+o _A_n_t_i_a_l_i_a_s_i_n_g: When it is not multisampling, _p_f_A_n_t_i_a_l_i_a_s
can significantly degrade performance. Specifically,
on systems other than InfiniteReality and
RealityEngine, use _p_f_A_n_t_i_a_l_i_a_s only for lines and
points.
+o _C_o_p_l_a_n_a_r _p_o_l_y_g_o_n_s: _p_f_D_e_c_a_l works only on machines that
support the _s_t_e_n_c_i_l or _d_i_s_p_l_a_c_e_p_o_l_y_g_o_n command. The
default decaling mode for PFDECAL_BASE uses
_d_i_s_p_l_a_c_e_p_o_l_y_g_o_n instead of _s_t_e_n_c_i_l. This can
significantly improve rendering performance on some
machines but can also result in visual anomalies where
layer polygons incorrectly "poke" through other
geometry. If you wish to use stencil then specify the
PFDECAL_BASE_HIGH_QUALITY token. In addition the new
reference plane mode is supported only on
InfiniteReality and only with patch 1808 or equiv.
+o _S_t_e_n_c_i_l: stencil is used for PFDECAL_BASE_HIGH_QUALITY
and for pfStats mode PFSTATSHW_GFXPIPE_FILL. The
Extreme graphics platform supports stencil with reduced
depth buffer resolution so IRIS Performer will not
allocate stencil bits in the default framebuffer
configuration. While allocated by default, the
allocation of extra stencil bits can also affect your
depth resolution and number of samples for multisample
on InfiniteReality and RealityEngine graphics
platforms.
+o _T_r_a_n_s_p_a_r_e_n_c_y: _p_f_T_r_a_n_s_p_a_r_e_n_c_y works only on machines
that support either _b_l_e_n_d_f_u_n_c_t_i_o_n or _m_u_l_t_i_s_a_m_p_l_e
(InfiniteReality and RealityEngine).
+o Since having other applications running can impact
real-time performance, it's sometimes desirable to
minimize the number of daemons and other processes. If
you have problems achieving real-time behavior, try the
_p_f_u_L_o_c_k_C_P_U utility code in _l_i_b_p_f_u_t_i_l. You might also
try turning off the desktop support and other daemons
that are not crucial to your application, e.g.:
% touch ~/.disableDesktop
or
% mkdir ~/.desktop-<machinename>
% touch ~/.desktop-<machinename>/nodesktop
- 7 -
and for total removal do:
% chkconfig desktop off
% chkconfig objectserver off (gone in IRIX 6.5)
% chkconfig directoryserver off
% chkconfig fontserver off
4.6 _llll_iiii_bbbb_pppp_ffff
+o Intersection testing of line segments (_p_f_N_o_d_e_I_s_e_c_t_S_e_g_s)
against geometry in _p_f_B_i_l_l_b_o_a_r_d nodes is not yet
implemented; only the bounding sphere of the entire
_p_f_B_i_l_l_b_o_a_r_d is available.
+o _C_h_a_n_n_e_l _f_a_d_e _L_O_D _a_t_t_r_i_b_u_t_e_s _a_n_d _m_i_x_e_d _g_r_a_p_h_i_c_s
_c_o_n_f_i_g_u_r_a_t_i_o_n_s: Channel fade LOD attributes are set in
the application process. The existence of multisample,
required for fade LOD, is tested at the time that the
attributes are set with _p_f_C_h_a_n_L_O_D_A_t_t_r. This test for
multisample uses the application process window system
connection (_p_f_O_p_e_n_W_S_C_o_n_n_e_c_t_i_o_n) or else the DISPLAY
environment variable to select a screen for determining
graphics configuration, rather than testing the current
window of the pfChannel. In a multipipe environment
where one graphics pipeline has multisample capability
(for example, with or without sufficient Raster Manager
boards for the chosen framebuffer resolution) and one
does not, the application process needs to have a
window system connection or DISPLAY that points to the
pipeline with multisample sufficiency, in which case
the non-multisample pfChannels will try to use fade
LOD. In a multi-window environment, windows without
multisample on a system with multisample will try to
use fade LOD.
+o Triple-Keyboard Option(TKO) doesn't work for IRISGL.
It works fine for OpenGL.
+o _C_U_L_L_o_D_R_A_W process model does not work properly.
+o _p_f_E_a_r_t_h_S_k_y does not work for offset viewing frustrum.
+o _p_f_A_S_D has memory leaks in the database paging. Your
applicaion may run out of memory after several ASD
tiles paging.
+o _p_f_A_S_D has alignment timing problem. When the number of
triangles in pfASD is large, there might be
inconsistency in position updates of moving vehicles on
terrain.
- 8 -
+o If you explicitly edit the _p_f_T_e_x_t_u_r_e, and then remove
all reference to TexLOD, the texLOD is not destroyed.
This is also consistent with our apply{Min,Max}LOD
behavior.
+o _N_6_4 static perfly fail to link in compilation.
+o When excuting _c_l_i_p_f_l_y, on the first few frames the
virtual LOD offset and other params seem to be bogus,
as if the node CULL func that sets it is not getting
executed or not having the proper effect.
+o _M_u_l_t_i _T_h_r_e_a_d_e_d _s_t_a_g_e_s get only one configStage
callback.
+o Performer applications die with an X error when run on
remote IMPACT display on which IRIX6.4 IMPACT Patch
1935 is installed. If you need to do remote rendering
on an IMPACT display, do not install patch 1935 or
upgrade to a more recent IMPACT patch (2677 or
replacement).
+o _p_f_C_l_i_p_T_e_x_t_u_r_e doesn't work with 8bit luminance data on
IMPACT patch 1935. It might be fixed in future IMPACT
patches.
+o For _p_f_S_C_S (and _p_f_S_C_S which is derived from it), the
value of pfGetTravMat() is not well-behaved-- sometimes
it returns a matrix that includes the pfSCS
transformation and sometimes not. The semantics
(according to the man page) may change and become more
sane in future patch releases of Performer 2.2.
4.7 _llll_iiii_bbbb_pppp_ffff_uuuu_tttt_iiii_llll
+o Calling _p_f_u_N_e_w_C_l_i_p_C_e_n_t_e_r_N_o_d_e or _p_f_u_N_e_w_M_P_C_l_i_p_C_e_n_t_e_r_N_o_d_e
on a pfGeode (possibly other types as well) as a child
when a pfdBuilder is being used to create a scene graph
(e.g. in the .im loader) can result in the callback
being lost. One workaround is to create a dummy
pfGroup node above the pfGeode and use that instead.
+o The implementation of _p_f_u_G_e_t_C_l_o_s_e_s_t_P_o_i_n_t (and therefore
_p_f_u_N_e_w_C_l_i_p_C_e_n_t_e_r_N_o_d_e which uses it) assumes that all
coordinate scaling in pfSCS and pfDCS nodes in the
scene are uniform, i.e. that the scale factor is the
same in all three coordinate axis directions. If this
is not the case, the answer returned will be valid
coordinates (and texture coordinates) of a point on a
triangle, but it may not be the actual closest point.
- 9 -
+o In the case of degenerate triangles the coordinates
returned by _p_f_u_G_e_t_C_l_o_s_e_s_t_P_o_i_n_t may not be on or close
to an object at all.
+o _p_f_u_G_e_t_C_l_o_s_e_s_t_P_o_i_n_t does not traverse point or line
primitives.
+o Interaction of _p_f_u_G_e_t_C_l_o_s_e_s_t_P_o_i_n_t with automatic
texture coordinate generation is very limited. Only
PFTG_OBJECT_LINEAR is supported, and then only when a
pfTexGen is explicitly attached to the pfGeoSet's
pfGeoState, and even this has not been well tested.
The safest approach is to specify texture coordinates
explicitly.
4.8 _llll_iiii_bbbb_pppp_ffff_uuuu_iiii
+o Libpfui has both a C API and a C++ API. The C API is
actually wrappers around the C++ API and is not
complete.
4.9 _llll_iiii_bbbb_pppp_ffff_dddd_bbbb
+o _p_f_d_L_o_a_d_F_i_l_e__d_x_f: The DXF loader does not fully support
the format.
+o _p_f_d_L_o_a_d_F_i_l_e__s_g_o: The SGO loader does not support
triangle strips.
+o _p_f_b file format does not support ClipMap textures.
4.10 _SSSS_aaaa_mmmm_pppp_llll_eeee _PPPP_rrrr_oooo_gggg_rrrr_aaaa_mmmm_ssss
+o _p_g_u_i_d_e/_l_i_b_p_u_i/_m_o_t_i_f_x_f_o_r_m_e_r: The motifxformer.c program
dumps core when loading new files in N32 or 64-bit with
6.2 and 6.3. This Motif bug has been fixed in 6.4.
+o _p_g_u_i_d_e/_l_i_b_p_f/_C/_l_p_s_t_a_t_e: The lpstate.c example for
demonstrating pfLPointStates assumes sophisticated
texturing capabilities that may not be fully supported
on IMPACT, Extreme, or Indy graphics platforms.
+o _p_e_r_f_l_y _n_e_e_d_s _f_u_l_l _s_c_r_e_e_n _w_i_n_d_o_w _f_o_r _D_V_R: When running
perfly and using dynamic video resolution (DVR), perfly
should be run with a full-screen, no-border window (ie,
do not use the -W option). If run from a smaller, or
bordered, window, the resizing will be very apparent as
it affects the entire video channel (which is usually
- 10 -
the entire screen for normal workstation operation).
+o _p_e_r_f_l_y _w_i_t_h _A_u_t_o_m_a_t_i_c-_D_V_R _w_i_l_l _b_e _r_e_d_r_a_w_i_n_g _G_U_I _w_h_e_n
_e_n_a_b_l_e_d: When the graphical user-interface (GUI) is
enabled and DVR is on, the GUI must be redrawn whenever
there is a video channel resize, or whenever the mouse
is in the GUI. This is very expensive and a drop in
framerate will be incurred.
+o _7._2 _c_o_m_p_i_l_e_r_s compilers warn about the obsolete and no
longer support Olimit flag that has to be replaced with
-OPT:Olimit=n in the makefile.
+o The default pfGeoState applied to the textured font
loaded with pfdLoadFont_type1( "anyFontName",
PFDFONT_TEXTURED ) ) has a transparency setting of
PFTR_ON | PFTR_NO_OCCLUDE. This causes major rendering
problems for the text. WAR: manually set this value to
PFTR_ON and everything works right.
4.11 _N_o_t_e_s__o_n__S_h_a_r_e_d__M_e_m_o_r_y__C_o_n_f_i_g_u_r_a_t_i_o_n_s
IRIS Performer requires shared memory and uses a memory-
mapped file, the location of which depends on the value of
the PFTMPDIR environment variable:
+o If PFTMPDIR is not set, Performer uses /_d_e_v/_z_e_r_o as the
default. Running an application in this configuration:
- Uses swap space
- Does not require disk space until main memory is
exhausted
- Is faster than using a regular memory mapped file
via PFTMPDIR
- Causes IRIX to kill the process(es) and log an
error to the console if the application runs out
of space for shared memory in the swap partition.
+o If PFTMPDIR is set, Performer creates files in the
specified directory. Running an application in this
configuration:
- Requires disk space even before main memory is
exhausted
- Is slower than /_d_e_v/_z_e_r_o because it touches the
disk
- 11 -
- Produces appropriately sized core dump files with
no limit set by IRIS Performer
- Might cause a core dump from a segmentation
violation inside _p_f_M_a_l_l_o_c if the application runs
out of space for shared memory in the file system
containing PFTMPDIR
- PFTMPDIR should be set only to a directory on a
local file system.